using System.Collections.Generic;
using HeadCounter.Armourer.Base;
using MathematicallySafe.HeadCounter.Data.Models;

namespace MathematicallySafe.HeadCounter.Data.Interfaces
{
    public interface IOptions: IPersistable
    {
        string GuildName { get; set; }
        WowRegion Region { get; set; }
        string Realm { get; set; }
        int ShortPeriodLength { get; set; }
        int LongPeriodLength { get; set; }
        Period DefaultPeriod { get; set; }
        int iLevelBase { get; set; }
        int iLevelProgression { get; set; }
        int iLevelTierDifference { get; set; }
        int MaxEffectiveAttendancePercent { get; set; }
        int MinAttendancePercent { get; set; }
        int MinAttendanceCount { get; set; }
        bool ReportOptionalRaids { get; set; }
        double HighAttendancePercentage { get; set; }
        double GoodAttendancePercentage { get; set; }
        double FairAttendancePercentage { get; set; }
        List<LootOverride> Overrides { get; set; }
        bool AutoApplyAttendanceCreditToDeletedRaiders { get; set; }
        bool ShowShortPeriodAllAttendance { get; set; }
        bool ShowShortPeriodAttendance { get; set; }
        bool ShowLongPeriodAttendance { get; set; }
        bool ShowLongPeriodAllAttendance { get; set; }
        bool ShowLifetimeAttendance { get; set; }
        bool ShowLifetimeAllAttendance { get; set; }
        bool ShowShortPeriodEffectiveAttendance { get; set; }
        bool ShowLongPeriodEffectiveAttendance { get; set; }
        bool ShowLifetimeEffectiveAttendance { get; set; }
        bool ShowShortPeriodLootCount { get; set; }
        bool ShowLongPeriodLootCount { get; set; }
        bool ShowLifetimeLootCount { get; set; }
        bool ShowShortPeriodLootValue { get; set; }
        bool ShowLongPeriodLootValue { get; set; }
        bool ShowLifetimeLootValue { get; set; }
        bool ShowShortPeriodLootRate { get; set; }
        bool ShowLongPeriodLootRate { get; set; }
        bool ShowLifetimeLootRate { get; set; }
        bool ShowShortPeriodLootWeightedValue { get; set; }
        bool ShowLongPeriodLootWeightedValue { get; set; }
        bool ShowLifetimeLootWeightedValue { get; set; }
        bool ShowShortPeriodWeightedLootRate { get; set; }
        bool ShowLongPeriodWeightedLootRate { get; set; }
        bool ShowLifetimeWeightedLootRate { get; set; }
        bool ShowShortPeriodLootPriority { get; set; }
        bool ShowLongPeriodLootPriority { get; set; }
        bool ShowLifetimeLootPriority { get; set; }
    }
}